A hub based computer architecture is a computer topology that uses a central hub as an interface between system memory, processor cluster and multiple satellite hubs. Typically, each satellite hub is connected to the central hub and interfaces with (or serves as a bridge to) one or more industry standard buses, such as the PCI (peripheral component interconnect), PCI-X (peripheral component interconnect extended), AGP (accelerated graphics port) buses. On the other hand, the connection between the satellite hubs and the central hub is typically made through a non-standard bus.
In a PC bus architecture, for example, there may be a hub satellite generally referred to as the south bridge. The south bridge contains much of the “legacy” functions of the computer system, such as e.g., the real time clock (RTC), floppy disk controller and certain DMA (direct memory access) and CMOS (complimentary metal-oxide semiconductor) memory registers. The south bridge may also contain interrupt controllers, such as the input/output (I/O) APIC (advanced programmable interrupt controller).
Certain events on the satellites that interface to the industry standard buses must be reported to an interrupt controller within the south bridge (or other similar satellite if a PC architecture is not used). These events may include error status or bus interrupts. For example, the PCI bus includes parity error status (PERR), system error status (SERR) and various interrupts. Traditionally, these events are connected directly to the south bridge, which requires dedicated pins and connections. These dedicated pins and connections make the system difficult to expand or reconfigure and often requires the addition of “glue logic” components to reconfigure the system architecture. Thus, it would be desirable to report events in a hub based architecture without the use of dedicated connections between satellites so that the system is scaleable and substantially easy to setup, reconfigure and upgrade. This would allow the system to use many different configurations.
During operation, hub based computer architectures sometimes require the flushing of data buffers to ensure that input data will be coherent in memory. Typically this arises after the occurrence of an isochronous event (i.e., irregularly occurring event). One type of isochronous event is an unscheduled interrupt. In a PC architecture, for example, the I/O APIC uses a separate side band bus to communicate interrupt events to the processor cluster. Prior to issuing an interrupt event to the processor cluster, the south bridge must ensure that all data buffers upstream from an interrupting device (e.g., a device or satellite connected to an industry standard bus) are flushed to memory to ensure coherency.
Traditionally, all upstream buffers are flushed by the south bridge prior to issuing the interrupt event on the I/O APIC bus. By requiring all data buffers to be flushed, the traditional technique increases interrupt latency and thus, reduces overall system performance. Thus, there is a need and desire to provide an efficient method of flushing data buffers in a hub based computer architecture that allows individual data buffers to be targeted and flushed to improve overall system performance.